#include "bsp_input.h"
//1-GPIO初始化及外部中断配置

void KEY_GPIO_Config(void)
{	
    GPIO_InitTypeDef GPIO_InitStruct;//输入共用

    RCC_AHB1PeriphClockCmd(INPUT_01_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_01_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_01_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_02_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_02_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_02_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_03_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_03_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_03_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_04_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_04_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_04_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_05_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_05_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_05_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_06_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_06_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_06_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_07_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_07_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_07_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_08_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_08_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_08_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_09_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_09_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_09_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_10_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_10_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_10_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_11_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_11_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_11_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_12_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_12_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_12_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_13_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_13_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_13_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_14_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_14_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_14_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_15_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_15_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_15_GPIO_PORT, &GPIO_InitStruct); 

    RCC_AHB1PeriphClockCmd(INPUT_16_GPIO_CLK, ENABLE);
    GPIO_InitStruct.GPIO_Pin = INPUT_16_GPIO_PIN;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(INPUT_16_GPIO_PORT, &GPIO_InitStruct); 

}

uint8_t Input_Scan(uint16_t INT_NUM)
{
    switch(INT_NUM)
    {
        case 1:
        {
            if( GPIO_ReadInputDataBit(INPUT_01_GPIO_PORT, INPUT_01_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        }
        case 2:
        {
            if( GPIO_ReadInputDataBit(INPUT_02_GPIO_PORT, INPUT_02_GPIO_PIN)== KEY_ON ) return KEY_ON;
		        else return KEY_OFF;
        }
        case 3:
        {
            if( GPIO_ReadInputDataBit(INPUT_03_GPIO_PORT, INPUT_03_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        }
        case 4:
        {
            if( GPIO_ReadInputDataBit(INPUT_04_GPIO_PORT, INPUT_04_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        }
        case 5:
        {
            if( GPIO_ReadInputDataBit(INPUT_05_GPIO_PORT, INPUT_05_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        }
        case 6:
        {
            if( GPIO_ReadInputDataBit(INPUT_06_GPIO_PORT, INPUT_06_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        }    
        case 7:
        {
            if( GPIO_ReadInputDataBit(INPUT_07_GPIO_PORT, INPUT_07_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        } 
        case 8:
        {
            if( GPIO_ReadInputDataBit(INPUT_08_GPIO_PORT, INPUT_08_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        }
        case 9:
        {
            if( GPIO_ReadInputDataBit(INPUT_09_GPIO_PORT, INPUT_09_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        }
        case 10:
        {
            if( GPIO_ReadInputDataBit(INPUT_10_GPIO_PORT, INPUT_10_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        }
        case 11:
        {
            if( GPIO_ReadInputDataBit(INPUT_11_GPIO_PORT, INPUT_11_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        }
        case 12:
        {
            if( GPIO_ReadInputDataBit(INPUT_12_GPIO_PORT, INPUT_12_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        } 
        case 13:
        {
            if( GPIO_ReadInputDataBit(INPUT_13_GPIO_PORT, INPUT_13_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        } 
        case 14:
        {
            if( GPIO_ReadInputDataBit(INPUT_14_GPIO_PORT, INPUT_14_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        } 
        case 15:
        {
            if( GPIO_ReadInputDataBit(INPUT_15_GPIO_PORT, INPUT_15_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        } 
        case 16:
        {
            if( GPIO_ReadInputDataBit(INPUT_16_GPIO_PORT, INPUT_16_GPIO_PIN)== KEY_ON ) return KEY_ON;
						else return KEY_OFF;
        } 
    }
		return KEY_OFF;
}
